WinDBG 사용법

April 23, 2020    1 분 소요

WinDBG에서 자주 사용했던 명령어들을 정리함.

심볼

SRV*C:\windbgsymbols*http://msdl.microsoft.com/download/symbols

꼭 추가해주자.

레이아웃

WinGDB_Layout

나는 이렇게 레이아웃을 설정하고 사용했음. 심볼을 추가하고 Layout을 설정한 후 Workspace를 저장해 두자.

명령어

기본사항

  • 숫자는 기본적으로 16진수. 0x 0n 0t 접두어 사용 가능.
  • .formats # : 포멧 확인
  • ? #수식 : 수식 연산
  • $, @ : 레지스터 접두사. 전자는 심볼로의 인식을 먼저 시도한다.

Breakpoints

  • bp #주솟값 : breakpoint, 계속 진행하려면 g
  • g #주솟값 : 주소값 나올 때까지 실행
  • bl : breakpoint list
  • bd #번호 : breakpoint disable
  • bc #번호 : breakpoint clear

Stepping

  • t : Step-in/trace
  • p : Step-over
  • gu: Step-out (go up) => ret 실행 후 멈춤
  • tt: trace to next return => t 수행하다 ret만나면 멈춤
  • pt: step to next return => p 수행하다 ret 만나면 멈춤

Register

  • r
  • u EIP L3 : EIP주소의 명령어 3개 보기
  • k : Call Stack

Memory View

  • db : byte (1)
  • dw : words (2)
  • dd : dwords (4)
  • dq : qwords (8)
  • dyb: bits
  • da : null로 끝나는 ascii 문자열
  • du : null로 끝나는 unicode 문자열
  • d* : 최근에 사용한 d 명령어
  • dg : display sector
  • dt #구조체이름 : 구조체 정보
  • e[d|w|b] #주솟값 [#새로운_값_배열]
  • s -[d|w|b|a|u] #시작주소 L?#찾을요소갯수 #찾을값 : 주소 + 단위 * 찾을요소갯수 까지 검색

Pointer

  • poi(#주솟값)

Structure

  • !teb / $teb
  • !peb / $peb
  • !dlls
  • !exchain
  • !vadump : 메모리 페이지 리스트와 정보
  • !lmi #모듈이름 : 모듈 정보
  • dt /r#n #구조체이름 : 구조체 정보를 n만큼의 level의 tree로 보여줌. ex) dt /r1 _PEB 0x003a4000